streamlit-nightly 1.46.2.dev20250707__py3-none-any.whl → 1.46.2.dev20250708__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. streamlit/config.py +37 -0
  2. streamlit/proto/NewSession_pb2.py +16 -16
  3. streamlit/proto/NewSession_pb2.pyi +5 -1
  4. streamlit/runtime/app_session.py +34 -0
  5. streamlit/runtime/websocket_session_manager.py +8 -0
  6. streamlit/static/index.html +1 -1
  7. streamlit/static/manifest.json +218 -218
  8. streamlit/static/static/js/{ErrorOutline.esm.Cwi9617t.js → ErrorOutline.esm.CO5UETnI.js} +1 -1
  9. streamlit/static/static/js/{FileDownload.esm.51ynStRd.js → FileDownload.esm.BodlLZ2E.js} +1 -1
  10. streamlit/static/static/js/{FileHelper.D56tzO8c.js → FileHelper.BJWG5mWZ.js} +1 -1
  11. streamlit/static/static/js/{FormClearHelper.D3Hp66Ed.js → FormClearHelper.Bfl6Fb0k.js} +1 -1
  12. streamlit/static/static/js/{Hooks.BY6BNTRM.js → Hooks.BZNasbgB.js} +1 -1
  13. streamlit/static/static/js/{InputInstructions.BwiNLSMY.js → InputInstructions.D9_advjq.js} +1 -1
  14. streamlit/static/static/js/{ProgressBar.BEUzLotK.js → ProgressBar.BOxvIdHT.js} +2 -2
  15. streamlit/static/static/js/{RenderInPortalIfExists.DM17zpkP.js → RenderInPortalIfExists.B-maQ3lr.js} +1 -1
  16. streamlit/static/static/js/{Toolbar.CkeeikHg.js → Toolbar.BulWrSVh.js} +1 -1
  17. streamlit/static/static/js/{base-input.yvVgWMq1.js → base-input.oeeD4NYL.js} +4 -4
  18. streamlit/static/static/js/{checkbox.B0zzRnN3.js → checkbox.BqkhIzEX.js} +2 -2
  19. streamlit/static/static/js/{createSuper.DUNTCGyw.js → createSuper.bxk9uEsc.js} +1 -1
  20. streamlit/static/static/js/{data-grid-overlay-editor.CkmHJFS4.js → data-grid-overlay-editor.BFUaa7qj.js} +1 -1
  21. streamlit/static/static/js/{downloader.SYvlWNHe.js → downloader.CkJ9l-mW.js} +1 -1
  22. streamlit/static/static/js/{es6.Dn_Sg6yN.js → es6.CwBeRZxt.js} +2 -2
  23. streamlit/static/static/js/{iframeResizer.contentWindow.CfNH32kg.js → iframeResizer.contentWindow.B4xDykub.js} +1 -1
  24. streamlit/static/static/js/{index.BRiZ2gjM.js → index.B0vAXwMf.js} +1 -1
  25. streamlit/static/static/js/{index.D4Y-sPIG.js → index.B6ClyDWN.js} +1 -1
  26. streamlit/static/static/js/{index.kOzLZcEm.js → index.BAyahmk4.js} +1 -1
  27. streamlit/static/static/js/index.BGGyfLIH.js +1 -0
  28. streamlit/static/static/js/{index.D_4zzgnM.js → index.BHzjJ3JF.js} +5 -5
  29. streamlit/static/static/js/{index.CQiUN-qB.js → index.BNmqvLux.js} +2 -2
  30. streamlit/static/static/js/{index.D5BdLSQe.js → index.BP1DQKkm.js} +1 -1
  31. streamlit/static/static/js/{index.BruyfZhe.js → index.BPKHA8Id.js} +1 -1
  32. streamlit/static/static/js/{index.PovmrFJI.js → index.BTHnpf1I.js} +11 -11
  33. streamlit/static/static/js/{index.Jh8NGUS3.js → index.Ba65H8D9.js} +1 -1
  34. streamlit/static/static/js/{index.vgdzRlb1.js → index.BdnKKSPg.js} +1 -1
  35. streamlit/static/static/js/{index.BzFIXYgy.js → index.Bejef4Pk.js} +17 -17
  36. streamlit/static/static/js/{index.vvD6DJW9.js → index.BffMV8Pv.js} +2 -2
  37. streamlit/static/static/js/{index.DaG51Kxa.js → index.BxVKLNUY.js} +1 -1
  38. streamlit/static/static/js/index.BypmpIBL.js +1 -0
  39. streamlit/static/static/js/{index.BntKz97_.js → index.C795t44A.js} +1 -1
  40. streamlit/static/static/js/{index.D0OXHmxl.js → index.CFoM9W4u.js} +1 -1
  41. streamlit/static/static/js/{index.nghT_Lxa.js → index.CGqm8hCs.js} +1 -1
  42. streamlit/static/static/js/{index.HuK1SvDk.js → index.CIEFJvy6.js} +1 -1
  43. streamlit/static/static/js/{index.iaPLfTT0.js → index.CIeZ4fAx.js} +1 -1
  44. streamlit/static/static/js/{index.BWpac6Co.js → index.CL4vTLmN.js} +1 -1
  45. streamlit/static/static/js/{index.BxbiLBoz.js → index.CfqX1ZBe.js} +1 -1
  46. streamlit/static/static/js/{index.Ce22m0pL.js → index.D-8V3tc4.js} +1 -1
  47. streamlit/static/static/js/{index.B1hWgsYC.js → index.D-sXGL7m.js} +1 -1
  48. streamlit/static/static/js/{index.BUNdJdwv.js → index.D3TXItBH.js} +1 -1
  49. streamlit/static/static/js/index.D4WIU5V6.js +1 -0
  50. streamlit/static/static/js/{index.GGLK4gvh.js → index.DFRMOZ8C.js} +1 -1
  51. streamlit/static/static/js/{index.B8GCXUc4.js → index.DQXLgrs8.js} +1 -1
  52. streamlit/static/static/js/{index.Dw7bwHQ9.js → index.DgSLJq20.js} +1 -1
  53. streamlit/static/static/js/index.Dl-ChXDk.js +1 -0
  54. streamlit/static/static/js/{index.BcKUsmmW.js → index.FerMd1cU.js} +3 -3
  55. streamlit/static/static/js/{index.D6T2dYXA.js → index.JlbLrYBv.js} +60 -60
  56. streamlit/static/static/js/{index.BpDsy6P7.js → index.VY0EoknV.js} +2 -2
  57. streamlit/static/static/js/{index.FkXunjOd.js → index.aAeBp5Oj.js} +2 -2
  58. streamlit/static/static/js/{index.q3-Tm2pt.js → index.oJk4Ge1s.js} +1 -1
  59. streamlit/static/static/js/{index.BfBckj-h.js → index.um9CUbiU.js} +1 -1
  60. streamlit/static/static/js/{index.C1ab5uBd.js → index.zT8XLZtx.js} +1 -1
  61. streamlit/static/static/js/{input.BPpQxxzu.js → input.C3tznRn_.js} +2 -2
  62. streamlit/static/static/js/{memory.CR9Ajd2U.js → memory.OHbOX5Ru.js} +1 -1
  63. streamlit/static/static/js/{mergeWith.DjeH399x.js → mergeWith._KN0v5Xp.js} +1 -1
  64. streamlit/static/static/js/{number-overlay-editor.D8gzaWdQ.js → number-overlay-editor.BKok-OUE.js} +1 -1
  65. streamlit/static/static/js/{possibleConstructorReturn.ChodIDx3.js → possibleConstructorReturn.BfCdE8Gx.js} +1 -1
  66. streamlit/static/static/js/{sandbox.Deilbzun.js → sandbox.BeWP76j9.js} +1 -1
  67. streamlit/static/static/js/{timepicker.CQyXj151.js → timepicker.C8LfA2ZU.js} +1 -1
  68. streamlit/static/static/js/{toConsumableArray.Ddyzgz2E.js → toConsumableArray.BHlwNsw4.js} +1 -1
  69. streamlit/static/static/js/{uniqueId.Cr5-pyqr.js → uniqueId.Ds4mfmXu.js} +1 -1
  70. streamlit/static/static/js/{useBasicWidgetState.DX8Dvi5d.js → useBasicWidgetState.Ds5amAnj.js} +1 -1
  71. streamlit/static/static/js/useOnInputChange.CnPrmPV-.js +1 -0
  72. streamlit/static/static/js/{useTextInputAutoExpand.BPsrdzpb.js → useTextInputAutoExpand.DRi3Jfhk.js} +2 -2
  73. streamlit/static/static/js/{withFullScreenWrapper.DpxbNIyf.js → withFullScreenWrapper.DtwYvNjS.js} +1 -1
  74. {streamlit_nightly-1.46.2.dev20250707.dist-info → streamlit_nightly-1.46.2.dev20250708.dist-info}/METADATA +1 -1
  75. {streamlit_nightly-1.46.2.dev20250707.dist-info → streamlit_nightly-1.46.2.dev20250708.dist-info}/RECORD +79 -79
  76. streamlit/static/static/js/index.B6IBhXXL.js +0 -1
  77. streamlit/static/static/js/index.CJJTafCM.js +0 -1
  78. streamlit/static/static/js/index.CP_ebS8J.js +0 -1
  79. streamlit/static/static/js/index.i0djEkgf.js +0 -1
  80. streamlit/static/static/js/useOnInputChange.CGiEpYpi.js +0 -1
  81. {streamlit_nightly-1.46.2.dev20250707.data → streamlit_nightly-1.46.2.dev20250708.data}/scripts/streamlit.cmd +0 -0
  82. {streamlit_nightly-1.46.2.dev20250707.dist-info → streamlit_nightly-1.46.2.dev20250708.dist-info}/WHEEL +0 -0
  83. {streamlit_nightly-1.46.2.dev20250707.dist-info → streamlit_nightly-1.46.2.dev20250708.dist-info}/entry_points.txt +0 -0
  84. {streamlit_nightly-1.46.2.dev20250707.dist-info → streamlit_nightly-1.46.2.dev20250708.dist-info}/top_level.txt +0 -0
streamlit/config.py CHANGED
@@ -1486,6 +1486,43 @@ _create_theme_options(
1486
1486
  """,
1487
1487
  )
1488
1488
 
1489
+ _create_theme_options(
1490
+ "chartSequentialColors",
1491
+ categories=["theme"],
1492
+ description="""
1493
+ An array of 10 colors to use for sequential charts.
1494
+
1495
+ If no chart sequential colors are set (or less than 10 colors provided),
1496
+ Streamlit uses a default set of colors.
1497
+ For light themes the default colors are:
1498
+ [
1499
+ "#e4f5ff", #blue10
1500
+ "#c7ebff", #blue20
1501
+ "#a6dcff", #blue30
1502
+ "#83c9ff", #blue40
1503
+ "#60b4ff", #blue50
1504
+ "#3d9df3", #blue60
1505
+ "#1c83e1", #blue70
1506
+ "#0068c9", #blue80
1507
+ "#0054a3", #blue90
1508
+ "#004280", #blue100
1509
+ ]
1510
+ For dark themes the default colors are:
1511
+ [
1512
+ "#004280", #blue100
1513
+ "#0054a3", #blue90
1514
+ "#0068c9", #blue80
1515
+ "#1c83e1", #blue70
1516
+ "#3d9df3", #blue60
1517
+ "#60b4ff", #blue50
1518
+ "#83c9ff", #blue40
1519
+ "#a6dcff", #blue30
1520
+ "#c7ebff", #blue20
1521
+ "#e4f5ff", #blue10
1522
+ ]
1523
+ """,
1524
+ )
1525
+
1489
1526
  # Config Section: Secrets #
1490
1527
 
1491
1528
  _create_section("secrets", "Secrets configuration.")
@@ -16,7 +16,7 @@ from streamlit.proto import AppPage_pb2 as streamlit_dot_proto_dot_AppPage__pb2
16
16
  from streamlit.proto import SessionStatus_pb2 as streamlit_dot_proto_dot_SessionStatus__pb2
17
17
 
18
18
 
19
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n streamlit/proto/NewSession.proto\x1a\x1dstreamlit/proto/AppPage.proto\x1a#streamlit/proto/SessionStatus.proto\"\xa5\x02\n\nNewSession\x12\x1f\n\ninitialize\x18\x01 \x01(\x0b\x32\x0b.Initialize\x12\x15\n\rscript_run_id\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x18\n\x10main_script_path\x18\x04 \x01(\t\x12\x17\n\x06\x63onfig\x18\x06 \x01(\x0b\x32\x07.Config\x12(\n\x0c\x63ustom_theme\x18\x07 \x01(\x0b\x32\x12.CustomThemeConfig\x12\x1b\n\tapp_pages\x18\x08 \x03(\x0b\x32\x08.AppPage\x12\x18\n\x10page_script_hash\x18\t \x01(\t\x12\x1d\n\x15\x66ragment_ids_this_run\x18\n \x03(\t\x12\x18\n\x10main_script_hash\x18\x0b \x01(\tJ\x04\x08\x05\x10\x06\"\xba\x01\n\nInitialize\x12\x1c\n\tuser_info\x18\x01 \x01(\x0b\x32\t.UserInfo\x12*\n\x10\x65nvironment_info\x18\x03 \x01(\x0b\x32\x10.EnvironmentInfo\x12&\n\x0esession_status\x18\x04 \x01(\x0b\x32\x0e.SessionStatus\x12\x14\n\x0c\x63ommand_line\x18\x05 \x01(\t\x12\x12\n\nsession_id\x18\x06 \x01(\t\x12\x10\n\x08is_hello\x18\x07 \x01(\x08\"\x97\x02\n\x06\x43onfig\x12\x1a\n\x12gather_usage_stats\x18\x02 \x01(\x08\x12\x1e\n\x16max_cached_message_age\x18\x03 \x01(\x05\x12\x14\n\x0cmapbox_token\x18\x04 \x01(\t\x12\x19\n\x11\x61llow_run_on_save\x18\x05 \x01(\x08\x12\x14\n\x0chide_top_bar\x18\x06 \x01(\x08\x12\x18\n\x10hide_sidebar_nav\x18\x07 \x01(\x08\x12)\n\x0ctoolbar_mode\x18\x08 \x01(\x0e\x32\x13.Config.ToolbarMode\"?\n\x0bToolbarMode\x12\x08\n\x04\x41UTO\x10\x00\x12\r\n\tDEVELOPER\x10\x01\x12\n\n\x06VIEWER\x10\x02\x12\x0b\n\x07MINIMAL\x10\x03J\x04\x08\x01\x10\x02\"\x9e\x0b\n\x11\x43ustomThemeConfig\x12\x15\n\rprimary_color\x18\x01 \x01(\t\x12\"\n\x1asecondary_background_color\x18\x02 \x01(\t\x12\x18\n\x10\x62\x61\x63kground_color\x18\x03 \x01(\t\x12\x12\n\ntext_color\x18\x04 \x01(\t\x12+\n\x04\x66ont\x18\x05 \x01(\x0e\x32\x1d.CustomThemeConfig.FontFamily\x12*\n\x04\x62\x61se\x18\x06 \x01(\x0e\x32\x1c.CustomThemeConfig.BaseTheme\x12\x1f\n\x17widget_background_color\x18\x07 \x01(\t\x12\x1b\n\x13widget_border_color\x18\x08 \x01(\t\x12\x15\n\x05radii\x18\t \x01(\x0b\x32\x06.Radii\x12\x14\n\x0cheading_font\x18\x0c \x01(\t\x12\x11\n\tbody_font\x18\r \x01(\t\x12\x11\n\tcode_font\x18\x0e \x01(\t\x12\x1d\n\nfont_faces\x18\x0f \x03(\x0b\x32\t.FontFace\x12\x1e\n\nfont_sizes\x18\x10 \x01(\x0b\x32\n.FontSizes\x12!\n\x19skeleton_background_color\x18\x11 \x01(\t\x12\x18\n\x0b\x62\x61se_radius\x18\x12 \x01(\tH\x00\x88\x01\x01\x12\x1a\n\rbutton_radius\x18\x1a \x01(\tH\x01\x88\x01\x01\x12\x19\n\x0c\x62order_color\x18\x13 \x01(\tH\x02\x88\x01\x01\x12#\n\x16\x64\x61taframe_border_color\x18\x1b \x01(\tH\x03\x88\x01\x01\x12\x1f\n\x12show_widget_border\x18\x14 \x01(\x08H\x04\x88\x01\x01\x12\x17\n\nlink_color\x18\x15 \x01(\tH\x05\x88\x01\x01\x12\x1b\n\x0elink_underline\x18\x1d \x01(\x08H\x06\x88\x01\x01\x12\x1b\n\x0e\x62\x61se_font_size\x18\x16 \x01(\x05H\x07\x88\x01\x01\x12\x1d\n\x10\x62\x61se_font_weight\x18\x1e \x01(\x05H\x08\x88\x01\x01\x12\x1d\n\x10\x63ode_font_weight\x18 \x01(\x05H\t\x88\x01\x01\x12\x1b\n\x0e\x63ode_font_size\x18\x1c \x01(\tH\n\x88\x01\x01\x12\x1a\n\x12heading_font_sizes\x18# \x03(\t\x12\x1c\n\x14heading_font_weights\x18\" \x03(\x05\x12 \n\x13show_sidebar_border\x18\x17 \x01(\x08H\x0b\x88\x01\x01\x12(\n\x07sidebar\x18\x18 \x01(\x0b\x32\x12.CustomThemeConfigH\x0c\x88\x01\x01\x12\"\n\x15\x63ode_background_color\x18\x19 \x01(\tH\r\x88\x01\x01\x12.\n!dataframe_header_background_color\x18\x1f \x01(\tH\x0e\x88\x01\x01\x12 \n\x18\x63hart_categorical_colors\x18! \x03(\t\" \n\tBaseTheme\x12\t\n\x05LIGHT\x10\x00\x12\x08\n\x04\x44\x41RK\x10\x01\"6\n\nFontFamily\x12\x0e\n\nSANS_SERIF\x10\x00\x12\t\n\x05SERIF\x10\x01\x12\r\n\tMONOSPACE\x10\x02\x42\x0e\n\x0c_base_radiusB\x10\n\x0e_button_radiusB\x0f\n\r_border_colorB\x19\n\x17_dataframe_border_colorB\x15\n\x13_show_widget_borderB\r\n\x0b_link_colorB\x11\n\x0f_link_underlineB\x11\n\x0f_base_font_sizeB\x13\n\x11_base_font_weightB\x13\n\x11_code_font_weightB\x11\n\x0f_code_font_sizeB\x16\n\x14_show_sidebar_borderB\n\n\x08_sidebarB\x18\n\x16_code_background_colorB$\n\"_dataframe_header_background_color\"w\n\x08\x46ontFace\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x0e\n\x06\x66\x61mily\x18\x02 \x01(\t\x12\x12\n\x06weight\x18\x03 \x01(\x05\x42\x02\x18\x01\x12\x14\n\x0cweight_range\x18\x05 \x01(\t\x12\r\n\x05style\x18\x04 \x01(\t\x12\x15\n\runicode_range\x18\x06 \x01(\t\"<\n\x05Radii\x12\x1a\n\x12\x62\x61se_widget_radius\x18\x01 \x01(\x05\x12\x17\n\x0f\x63heckbox_radius\x18\x02 \x01(\x05\"T\n\tFontSizes\x12\x16\n\x0etiny_font_size\x18\x01 \x01(\x05\x12\x17\n\x0fsmall_font_size\x18\x02 \x01(\x05\x12\x16\n\x0e\x62\x61se_font_size\x18\x03 \x01(\x05\"a\n\x08UserInfo\x12\x17\n\x0finstallation_id\x18\x01 \x01(\t\x12\x1a\n\x12installation_id_v3\x18\x05 \x01(\t\x12\x1a\n\x12installation_id_v4\x18\x06 \x01(\tJ\x04\x08\x02\x10\x03\"l\n\x0f\x45nvironmentInfo\x12\x19\n\x11streamlit_version\x18\x01 \x01(\t\x12\x16\n\x0epython_version\x18\x02 \x01(\t\x12\x11\n\tserver_os\x18\x03 \x01(\t\x12\x13\n\x0bhas_display\x18\x04 \x01(\x08\x42/\n\x1c\x63om.snowflake.apps.streamlitB\x0fNewSessionProtob\x06proto3')
19
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n streamlit/proto/NewSession.proto\x1a\x1dstreamlit/proto/AppPage.proto\x1a#streamlit/proto/SessionStatus.proto\"\xa5\x02\n\nNewSession\x12\x1f\n\ninitialize\x18\x01 \x01(\x0b\x32\x0b.Initialize\x12\x15\n\rscript_run_id\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x18\n\x10main_script_path\x18\x04 \x01(\t\x12\x17\n\x06\x63onfig\x18\x06 \x01(\x0b\x32\x07.Config\x12(\n\x0c\x63ustom_theme\x18\x07 \x01(\x0b\x32\x12.CustomThemeConfig\x12\x1b\n\tapp_pages\x18\x08 \x03(\x0b\x32\x08.AppPage\x12\x18\n\x10page_script_hash\x18\t \x01(\t\x12\x1d\n\x15\x66ragment_ids_this_run\x18\n \x03(\t\x12\x18\n\x10main_script_hash\x18\x0b \x01(\tJ\x04\x08\x05\x10\x06\"\xba\x01\n\nInitialize\x12\x1c\n\tuser_info\x18\x01 \x01(\x0b\x32\t.UserInfo\x12*\n\x10\x65nvironment_info\x18\x03 \x01(\x0b\x32\x10.EnvironmentInfo\x12&\n\x0esession_status\x18\x04 \x01(\x0b\x32\x0e.SessionStatus\x12\x14\n\x0c\x63ommand_line\x18\x05 \x01(\t\x12\x12\n\nsession_id\x18\x06 \x01(\t\x12\x10\n\x08is_hello\x18\x07 \x01(\x08\"\x97\x02\n\x06\x43onfig\x12\x1a\n\x12gather_usage_stats\x18\x02 \x01(\x08\x12\x1e\n\x16max_cached_message_age\x18\x03 \x01(\x05\x12\x14\n\x0cmapbox_token\x18\x04 \x01(\t\x12\x19\n\x11\x61llow_run_on_save\x18\x05 \x01(\x08\x12\x14\n\x0chide_top_bar\x18\x06 \x01(\x08\x12\x18\n\x10hide_sidebar_nav\x18\x07 \x01(\x08\x12)\n\x0ctoolbar_mode\x18\x08 \x01(\x0e\x32\x13.Config.ToolbarMode\"?\n\x0bToolbarMode\x12\x08\n\x04\x41UTO\x10\x00\x12\r\n\tDEVELOPER\x10\x01\x12\n\n\x06VIEWER\x10\x02\x12\x0b\n\x07MINIMAL\x10\x03J\x04\x08\x01\x10\x02\"\xbf\x0b\n\x11\x43ustomThemeConfig\x12\x15\n\rprimary_color\x18\x01 \x01(\t\x12\"\n\x1asecondary_background_color\x18\x02 \x01(\t\x12\x18\n\x10\x62\x61\x63kground_color\x18\x03 \x01(\t\x12\x12\n\ntext_color\x18\x04 \x01(\t\x12+\n\x04\x66ont\x18\x05 \x01(\x0e\x32\x1d.CustomThemeConfig.FontFamily\x12*\n\x04\x62\x61se\x18\x06 \x01(\x0e\x32\x1c.CustomThemeConfig.BaseTheme\x12\x1f\n\x17widget_background_color\x18\x07 \x01(\t\x12\x1b\n\x13widget_border_color\x18\x08 \x01(\t\x12\x15\n\x05radii\x18\t \x01(\x0b\x32\x06.Radii\x12\x14\n\x0cheading_font\x18\x0c \x01(\t\x12\x11\n\tbody_font\x18\r \x01(\t\x12\x11\n\tcode_font\x18\x0e \x01(\t\x12\x1d\n\nfont_faces\x18\x0f \x03(\x0b\x32\t.FontFace\x12\x1e\n\nfont_sizes\x18\x10 \x01(\x0b\x32\n.FontSizes\x12!\n\x19skeleton_background_color\x18\x11 \x01(\t\x12\x18\n\x0b\x62\x61se_radius\x18\x12 \x01(\tH\x00\x88\x01\x01\x12\x1a\n\rbutton_radius\x18\x1a \x01(\tH\x01\x88\x01\x01\x12\x19\n\x0c\x62order_color\x18\x13 \x01(\tH\x02\x88\x01\x01\x12#\n\x16\x64\x61taframe_border_color\x18\x1b \x01(\tH\x03\x88\x01\x01\x12\x1f\n\x12show_widget_border\x18\x14 \x01(\x08H\x04\x88\x01\x01\x12\x17\n\nlink_color\x18\x15 \x01(\tH\x05\x88\x01\x01\x12\x1b\n\x0elink_underline\x18\x1d \x01(\x08H\x06\x88\x01\x01\x12\x1b\n\x0e\x62\x61se_font_size\x18\x16 \x01(\x05H\x07\x88\x01\x01\x12\x1d\n\x10\x62\x61se_font_weight\x18\x1e \x01(\x05H\x08\x88\x01\x01\x12\x1d\n\x10\x63ode_font_weight\x18 \x01(\x05H\t\x88\x01\x01\x12\x1b\n\x0e\x63ode_font_size\x18\x1c \x01(\tH\n\x88\x01\x01\x12\x1a\n\x12heading_font_sizes\x18# \x03(\t\x12\x1c\n\x14heading_font_weights\x18\" \x03(\x05\x12 \n\x13show_sidebar_border\x18\x17 \x01(\x08H\x0b\x88\x01\x01\x12(\n\x07sidebar\x18\x18 \x01(\x0b\x32\x12.CustomThemeConfigH\x0c\x88\x01\x01\x12\"\n\x15\x63ode_background_color\x18\x19 \x01(\tH\r\x88\x01\x01\x12.\n!dataframe_header_background_color\x18\x1f \x01(\tH\x0e\x88\x01\x01\x12 \n\x18\x63hart_categorical_colors\x18! \x03(\t\x12\x1f\n\x17\x63hart_sequential_colors\x18$ \x03(\t\" \n\tBaseTheme\x12\t\n\x05LIGHT\x10\x00\x12\x08\n\x04\x44\x41RK\x10\x01\"6\n\nFontFamily\x12\x0e\n\nSANS_SERIF\x10\x00\x12\t\n\x05SERIF\x10\x01\x12\r\n\tMONOSPACE\x10\x02\x42\x0e\n\x0c_base_radiusB\x10\n\x0e_button_radiusB\x0f\n\r_border_colorB\x19\n\x17_dataframe_border_colorB\x15\n\x13_show_widget_borderB\r\n\x0b_link_colorB\x11\n\x0f_link_underlineB\x11\n\x0f_base_font_sizeB\x13\n\x11_base_font_weightB\x13\n\x11_code_font_weightB\x11\n\x0f_code_font_sizeB\x16\n\x14_show_sidebar_borderB\n\n\x08_sidebarB\x18\n\x16_code_background_colorB$\n\"_dataframe_header_background_color\"w\n\x08\x46ontFace\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x0e\n\x06\x66\x61mily\x18\x02 \x01(\t\x12\x12\n\x06weight\x18\x03 \x01(\x05\x42\x02\x18\x01\x12\x14\n\x0cweight_range\x18\x05 \x01(\t\x12\r\n\x05style\x18\x04 \x01(\t\x12\x15\n\runicode_range\x18\x06 \x01(\t\"<\n\x05Radii\x12\x1a\n\x12\x62\x61se_widget_radius\x18\x01 \x01(\x05\x12\x17\n\x0f\x63heckbox_radius\x18\x02 \x01(\x05\"T\n\tFontSizes\x12\x16\n\x0etiny_font_size\x18\x01 \x01(\x05\x12\x17\n\x0fsmall_font_size\x18\x02 \x01(\x05\x12\x16\n\x0e\x62\x61se_font_size\x18\x03 \x01(\x05\"a\n\x08UserInfo\x12\x17\n\x0finstallation_id\x18\x01 \x01(\t\x12\x1a\n\x12installation_id_v3\x18\x05 \x01(\t\x12\x1a\n\x12installation_id_v4\x18\x06 \x01(\tJ\x04\x08\x02\x10\x03\"l\n\x0f\x45nvironmentInfo\x12\x19\n\x11streamlit_version\x18\x01 \x01(\t\x12\x16\n\x0epython_version\x18\x02 \x01(\t\x12\x11\n\tserver_os\x18\x03 \x01(\t\x12\x13\n\x0bhas_display\x18\x04 \x01(\x08\x42/\n\x1c\x63om.snowflake.apps.streamlitB\x0fNewSessionProtob\x06proto3')
20
20
 
21
21
  _globals = globals()
22
22
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -35,19 +35,19 @@ if not _descriptor._USE_C_DESCRIPTORS:
35
35
  _globals['_CONFIG_TOOLBARMODE']._serialized_start=800
36
36
  _globals['_CONFIG_TOOLBARMODE']._serialized_end=863
37
37
  _globals['_CUSTOMTHEMECONFIG']._serialized_start=872
38
- _globals['_CUSTOMTHEMECONFIG']._serialized_end=2310
39
- _globals['_CUSTOMTHEMECONFIG_BASETHEME']._serialized_start=1907
40
- _globals['_CUSTOMTHEMECONFIG_BASETHEME']._serialized_end=1939
41
- _globals['_CUSTOMTHEMECONFIG_FONTFAMILY']._serialized_start=1941
42
- _globals['_CUSTOMTHEMECONFIG_FONTFAMILY']._serialized_end=1995
43
- _globals['_FONTFACE']._serialized_start=2312
44
- _globals['_FONTFACE']._serialized_end=2431
45
- _globals['_RADII']._serialized_start=2433
46
- _globals['_RADII']._serialized_end=2493
47
- _globals['_FONTSIZES']._serialized_start=2495
48
- _globals['_FONTSIZES']._serialized_end=2579
49
- _globals['_USERINFO']._serialized_start=2581
50
- _globals['_USERINFO']._serialized_end=2678
51
- _globals['_ENVIRONMENTINFO']._serialized_start=2680
52
- _globals['_ENVIRONMENTINFO']._serialized_end=2788
38
+ _globals['_CUSTOMTHEMECONFIG']._serialized_end=2343
39
+ _globals['_CUSTOMTHEMECONFIG_BASETHEME']._serialized_start=1940
40
+ _globals['_CUSTOMTHEMECONFIG_BASETHEME']._serialized_end=1972
41
+ _globals['_CUSTOMTHEMECONFIG_FONTFAMILY']._serialized_start=1974
42
+ _globals['_CUSTOMTHEMECONFIG_FONTFAMILY']._serialized_end=2028
43
+ _globals['_FONTFACE']._serialized_start=2345
44
+ _globals['_FONTFACE']._serialized_end=2464
45
+ _globals['_RADII']._serialized_start=2466
46
+ _globals['_RADII']._serialized_end=2526
47
+ _globals['_FONTSIZES']._serialized_start=2528
48
+ _globals['_FONTSIZES']._serialized_end=2612
49
+ _globals['_USERINFO']._serialized_start=2614
50
+ _globals['_USERINFO']._serialized_end=2711
51
+ _globals['_ENVIRONMENTINFO']._serialized_start=2713
52
+ _globals['_ENVIRONMENTINFO']._serialized_end=2821
53
53
  # @@protoc_insertion_point(module_scope)
@@ -302,6 +302,7 @@ class CustomThemeConfig(google.protobuf.message.Message):
302
302
  CODE_BACKGROUND_COLOR_FIELD_NUMBER: builtins.int
303
303
  DATAFRAME_HEADER_BACKGROUND_COLOR_FIELD_NUMBER: builtins.int
304
304
  CHART_CATEGORICAL_COLORS_FIELD_NUMBER: builtins.int
305
+ CHART_SEQUENTIAL_COLORS_FIELD_NUMBER: builtins.int
305
306
  primary_color: builtins.str
306
307
  secondary_background_color: builtins.str
307
308
  background_color: builtins.str
@@ -350,6 +351,8 @@ class CustomThemeConfig(google.protobuf.message.Message):
350
351
  def sidebar(self) -> global___CustomThemeConfig: ...
351
352
  @property
352
353
  def chart_categorical_colors(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ...
354
+ @property
355
+ def chart_sequential_colors(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ...
353
356
  def __init__(
354
357
  self,
355
358
  *,
@@ -386,9 +389,10 @@ class CustomThemeConfig(google.protobuf.message.Message):
386
389
  code_background_color: builtins.str | None = ...,
387
390
  dataframe_header_background_color: builtins.str | None = ...,
388
391
  chart_categorical_colors: collections.abc.Iterable[builtins.str] | None = ...,
392
+ chart_sequential_colors: collections.abc.Iterable[builtins.str] | None = ...,
389
393
  ) -> None: ...
390
394
  def HasField(self, field_name: typing.Literal["_base_font_size", b"_base_font_size", "_base_font_weight", b"_base_font_weight", "_base_radius", b"_base_radius", "_border_color", b"_border_color", "_button_radius", b"_button_radius", "_code_background_color", b"_code_background_color", "_code_font_size", b"_code_font_size", "_code_font_weight", b"_code_font_weight", "_dataframe_border_color", b"_dataframe_border_color", "_dataframe_header_background_color", b"_dataframe_header_background_color", "_link_color", b"_link_color", "_link_underline", b"_link_underline", "_show_sidebar_border", b"_show_sidebar_border", "_show_widget_border", b"_show_widget_border", "_sidebar", b"_sidebar", "base_font_size", b"base_font_size", "base_font_weight", b"base_font_weight", "base_radius", b"base_radius", "border_color", b"border_color", "button_radius", b"button_radius", "code_background_color", b"code_background_color", "code_font_size", b"code_font_size", "code_font_weight", b"code_font_weight", "dataframe_border_color", b"dataframe_border_color", "dataframe_header_background_color", b"dataframe_header_background_color", "font_sizes", b"font_sizes", "link_color", b"link_color", "link_underline", b"link_underline", "radii", b"radii", "show_sidebar_border", b"show_sidebar_border", "show_widget_border", b"show_widget_border", "sidebar", b"sidebar"]) -> builtins.bool: ...
391
- def ClearField(self, field_name: typing.Literal["_base_font_size", b"_base_font_size", "_base_font_weight", b"_base_font_weight", "_base_radius", b"_base_radius", "_border_color", b"_border_color", "_button_radius", b"_button_radius", "_code_background_color", b"_code_background_color", "_code_font_size", b"_code_font_size", "_code_font_weight", b"_code_font_weight", "_dataframe_border_color", b"_dataframe_border_color", "_dataframe_header_background_color", b"_dataframe_header_background_color", "_link_color", b"_link_color", "_link_underline", b"_link_underline", "_show_sidebar_border", b"_show_sidebar_border", "_show_widget_border", b"_show_widget_border", "_sidebar", b"_sidebar", "background_color", b"background_color", "base", b"base", "base_font_size", b"base_font_size", "base_font_weight", b"base_font_weight", "base_radius", b"base_radius", "body_font", b"body_font", "border_color", b"border_color", "button_radius", b"button_radius", "chart_categorical_colors", b"chart_categorical_colors", "code_background_color", b"code_background_color", "code_font", b"code_font", "code_font_size", b"code_font_size", "code_font_weight", b"code_font_weight", "dataframe_border_color", b"dataframe_border_color", "dataframe_header_background_color", b"dataframe_header_background_color", "font", b"font", "font_faces", b"font_faces", "font_sizes", b"font_sizes", "heading_font", b"heading_font", "heading_font_sizes", b"heading_font_sizes", "heading_font_weights", b"heading_font_weights", "link_color", b"link_color", "link_underline", b"link_underline", "primary_color", b"primary_color", "radii", b"radii", "secondary_background_color", b"secondary_background_color", "show_sidebar_border", b"show_sidebar_border", "show_widget_border", b"show_widget_border", "sidebar", b"sidebar", "skeleton_background_color", b"skeleton_background_color", "text_color", b"text_color", "widget_background_color", b"widget_background_color", "widget_border_color", b"widget_border_color"]) -> None: ...
395
+ def ClearField(self, field_name: typing.Literal["_base_font_size", b"_base_font_size", "_base_font_weight", b"_base_font_weight", "_base_radius", b"_base_radius", "_border_color", b"_border_color", "_button_radius", b"_button_radius", "_code_background_color", b"_code_background_color", "_code_font_size", b"_code_font_size", "_code_font_weight", b"_code_font_weight", "_dataframe_border_color", b"_dataframe_border_color", "_dataframe_header_background_color", b"_dataframe_header_background_color", "_link_color", b"_link_color", "_link_underline", b"_link_underline", "_show_sidebar_border", b"_show_sidebar_border", "_show_widget_border", b"_show_widget_border", "_sidebar", b"_sidebar", "background_color", b"background_color", "base", b"base", "base_font_size", b"base_font_size", "base_font_weight", b"base_font_weight", "base_radius", b"base_radius", "body_font", b"body_font", "border_color", b"border_color", "button_radius", b"button_radius", "chart_categorical_colors", b"chart_categorical_colors", "chart_sequential_colors", b"chart_sequential_colors", "code_background_color", b"code_background_color", "code_font", b"code_font", "code_font_size", b"code_font_size", "code_font_weight", b"code_font_weight", "dataframe_border_color", b"dataframe_border_color", "dataframe_header_background_color", b"dataframe_header_background_color", "font", b"font", "font_faces", b"font_faces", "font_sizes", b"font_sizes", "heading_font", b"heading_font", "heading_font_sizes", b"heading_font_sizes", "heading_font_weights", b"heading_font_weights", "link_color", b"link_color", "link_underline", b"link_underline", "primary_color", b"primary_color", "radii", b"radii", "secondary_background_color", b"secondary_background_color", "show_sidebar_border", b"show_sidebar_border", "show_widget_border", b"show_widget_border", "sidebar", b"sidebar", "skeleton_background_color", b"skeleton_background_color", "text_color", b"text_color", "widget_background_color", b"widget_background_color", "widget_border_color", b"widget_border_color"]) -> None: ...
392
396
  @typing.overload
393
397
  def WhichOneof(self, oneof_group: typing.Literal["_base_font_size", b"_base_font_size"]) -> typing.Literal["base_font_size"] | None: ...
394
398
  @typing.overload
@@ -949,6 +949,7 @@ def _populate_theme_msg(msg: CustomThemeConfig, section: str = "theme") -> None:
949
949
  "headingFontSizes",
950
950
  "headingFontWeights",
951
951
  "chartCategoricalColors",
952
+ "chartSequentialColors",
952
953
  }
953
954
  and option_val is not None
954
955
  ):
@@ -1115,6 +1116,39 @@ def _populate_theme_msg(msg: CustomThemeConfig, section: str = "theme") -> None:
1115
1116
  exc_info=e,
1116
1117
  )
1117
1118
 
1119
+ chart_sequential_colors = theme_opts.get("chartSequentialColors", None)
1120
+ # If chartSequentialColors was configured via config.toml, it's already a list of
1121
+ # strings. However, if it was provided via env variable or via CLI arg,
1122
+ # it's a json string that needs to be parsed.
1123
+ if isinstance(chart_sequential_colors, str):
1124
+ try:
1125
+ chart_sequential_colors = json.loads(chart_sequential_colors)
1126
+ except json.JSONDecodeError as e:
1127
+ _LOGGER.warning(
1128
+ "Failed to parse the theme.chartSequentialColors config option: %s.",
1129
+ chart_sequential_colors,
1130
+ exc_info=e,
1131
+ )
1132
+ chart_sequential_colors = None
1133
+
1134
+ if chart_sequential_colors is not None:
1135
+ # Check that the list has 10 color values
1136
+ if len(chart_sequential_colors) != 10:
1137
+ _LOGGER.error(
1138
+ "Config theme.chartSequentialColors should have 10 color values, "
1139
+ "but got %s. Defaulting to Streamlit's default colors.",
1140
+ len(chart_sequential_colors),
1141
+ )
1142
+ for color in chart_sequential_colors:
1143
+ try:
1144
+ msg.chart_sequential_colors.append(color)
1145
+ except Exception as e: # noqa: PERF203
1146
+ _LOGGER.warning(
1147
+ "Failed to parse the theme.chartSequentialColors config option: %s.",
1148
+ color,
1149
+ exc_info=e,
1150
+ )
1151
+
1118
1152
 
1119
1153
  def _populate_user_info_msg(msg: UserInfo) -> None:
1120
1154
  inst = Installation.instance()
@@ -137,6 +137,10 @@ class WebsocketSessionManager(SessionManager):
137
137
  )
138
138
  del self._active_session_info_by_id[session_id]
139
139
 
140
+ if not self._active_session_info_by_id:
141
+ # Avoid stale cached scripts when all file watchers and sessions are disconnected
142
+ self._script_cache.clear()
143
+
140
144
  def get_active_session_info(self, session_id: str) -> ActiveSessionInfo | None:
141
145
  return self._active_session_info_by_id.get(session_id)
142
146
 
@@ -151,6 +155,10 @@ class WebsocketSessionManager(SessionManager):
151
155
  active_session_info = self._active_session_info_by_id[session_id]
152
156
  del self._active_session_info_by_id[session_id]
153
157
  active_session_info.session.shutdown()
158
+
159
+ if not self._active_session_info_by_id:
160
+ # Avoid stale cached scripts when all file watchers and sessions are disconnected
161
+ self._script_cache.clear()
154
162
  return
155
163
 
156
164
  session_info = self._session_storage.get(session_id)
@@ -37,7 +37,7 @@
37
37
  <script>
38
38
  window.prerenderReady = false
39
39
  </script>
40
- <script type="module" crossorigin src="./static/js/index.D6T2dYXA.js"></script>
40
+ <script type="module" crossorigin src="./static/js/index.JlbLrYBv.js"></script>
41
41
  <link rel="stylesheet" crossorigin href="./static/css/index.CJVRHjQZ.css">
42
42
  </head>
43
43
  <body>